package com.dcivision.dms.client.analyzer;
/*
 * @(#)DmsDocumentAnalyzer.java
 *
 * Copyright (c) 2003 DCIVision Ltd
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of DCIVision
 * Ltd ("Confidential Information").  You shall not disclose such Confidential
 * Information and shall use it only in accordance with the terms of the license
 * agreement you entered into with DCIVision Ltd.
 */


import java.sql.Connection;

import com.dcivision.dms.web.MaintDmsDocumentForm;
import com.dcivision.framework.ApplicationException;
import com.dcivision.framework.SessionContainer;

/**
 * <p>Class Name:       DmsDocumentAnalyzer.java    </p>
 * <p>Description:      This class is providing an interface for all kind of method on document Name defining and folder creation for uploading files.</p>
 * @author              Zoe Shum
 * @company             DCIVision Limited
 * @creation date       05/08/2003
 * @version             $Revision: 1.8 $
 */

public interface DmsDocumentAnalyzer {

  public static final String DESCRIPTION_TAG = "description";
  public static final String REFERENCE_NUM_TAG = "reference_no";
  public static final String USER_DEF_1 = "user_def_1";
  public static final String USER_DEF_2 = "user_def_2";
  public static final String USER_DEF_3 = "user_def_3";
  public static final String USER_DEF_4 = "user_def_4";
  public static final String USER_DEF_5 = "user_def_5";
  public static final String USER_DEF_6 = "user_def_6";
  public static final String USER_DEF_7 = "user_def_7";
  public static final String USER_DEF_8 = "user_def_8";
  public static final String USER_DEF_9 = "user_def_9";
  public static final String USER_DEF_10 = "user_def_10";
  public static final String DOCUMENT_PROFILE_TAG = "document_profile";
  public static final String SUBMIT_SYSTEM_WORKFLOW = "submit_system_workflow";
  public static final String WORKFLOW_RECORD_ID = "workflow_record_id";
  public static final String ROOT_ID = "root_id";
  public static final String PARENT_ID = "parent_id" ;
  public static final String DESCRIPTOR = "descriptor";

  public Integer getID();
  public String getDocumentName();
  public Integer getParentID();
  public Integer getRootID() ;
  public String getEffectiveStartDate();
  public String getReferenceNo();
  public String getDescription() ;
  public String getUserDef1();
  public String getUserDef2();
  public String getUserDef3();
  public String getUserDef4();
  public String getUserDef5();
  public String getUserDef6();
  public String getUserDef7();
  public String getUserDef8();
  public String getUserDef9();
  public String getUserDef10();
  public String getFullText();
  public String getOpMode();
  public String getWorkflowRecordID();
  public String getSubmitSystemWorkflow();

  /* Input the DOM Document to retrieve the document info for creation */
  public abstract Boolean analyze(SessionContainer sessionContainer, Connection conn, MaintDmsDocumentForm docForm, java.io.InputStream infile) throws ApplicationException;

  /* Parsed DmsDocument object for furthure customization check*/
  public abstract Boolean analyzeForCustomizationAction(SessionContainer sessionContainer, Connection conn, MaintDmsDocumentForm docForm, java.io.InputStream infile) throws ApplicationException;

  /* Input the DOM Document to retrieve the document name for creation */
  public abstract String resolveDocumentName(org.w3c.dom.Document indexFile) throws ApplicationException;

  /* Input the DOM Document to retrieve the folder name for folder creation */
  public abstract String resolverFolderName(org.w3c.dom.Document indexFile) throws ApplicationException;

  /* Input the DOM Document to create the folder structure for uploaded document */
  public String resolverDocumentInfo(org.w3c.dom.Document indexFile, String tagName) throws ApplicationException;

  /* Input the DOM Document to retrieve the full text for document */
  public abstract String resolverFullText(org.w3c.dom.Document indexFile) throws ApplicationException;

}